#pragma once
#include <string>
#include <sstream>
#include <map>

#include "Spell.h"
#include "Cure.h"
#include "Fire1.h"
#include "Ice1.h"
#include "Bolt1.h"
#include "Slash.h"
#include "Flare.h"
#include "Quake.h"

class SpellList
{
#pragma region SINGLETON
public:
	static SpellList* GetInstance()
	{
		if(instance == nullptr)
		{
			instance = new SpellList();
		}
		return instance;
	}
	static void Kill()
	{
		delete instance;
		instance = nullptr;
	}
private:
	static SpellList* instance;

	SpellList();
	SpellList(const SpellList& r);
	~SpellList();

	SpellList& operator=(const SpellList& r);
#pragma endregion

private:
	std::map<std::string, Spell*> spells;

public:
	void Init();

	Spell* getSpell(std::string spellName) { return spells[spellName]; };
};

